#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

using vec3 = vector<vector<vector<int>>>;
using vec = vector<int>;

void dfs(vec3 &gh, vec &num, int u, int p)
{
        for(auto e : gh[u]){
                int v = e[0], w = e[1];
                if(v != p){
                        dfs(gh, num, v, u);
                        num[u] += num[v] + w;
                }
        }
}

void dfs2(vec3 &gh, vec &num, int u, int p)
{
        for(auto e : gh[u]){
                int v = e[0], w = e[1];
                if(v != p){
                        if(w == 0){
                                num[v] = num[u] + 1;
                        }else{
                                num[v] = num[u] - 1;
                        }
                        dfs2(gh, num, v, u);
                }
        }
}

int main()
{
        int n = 0;
        cin >> n;

        vec3 gh(n + 1);
        for(int i = 0, u, v; i < n - 1; i++){
                cin >> u >> v;
                gh[u].push_back({v, 0});
                gh[v].push_back({u, 1});
        }

        vec num(n + 1, 0);
        dfs(gh, num, 1, 0);
        dfs2(gh, num, 1, 0);

        int min_revers = *min_element(num.begin() + 1, num.end());
        cout << min_revers << endl;
        for(int i = 1; i <= n; i++){
                if(num[i] == min_revers){
                        cout << i << ' ';
                }
        }
        cout << endl;
        return 0;
}